#ifndef DIRECTORYWATCHER_H
#define DIRECTORYWATCHER_H

#include <QObject>
#include <QWidget>
#include <QCoreApplication>
#include <QFileSystemWatcher>
#include <QDir>
#include <QDebug>
#include <QString>
#include <QFileInfo>
#include <QDateTime>
#include <QSet>
#include <QStringList>
#include <QTimer>
#include <QMap>
#include "fileUtil.hpp"
class DirectoryWatcher : public QObject
{
    Q_OBJECT
public:
    explicit DirectoryWatcher(const QString &directory = "", QObject *parent = nullptr);

signals:
    void fileAdded(const QString &filePath);
    void fileModified(const QString &filePath);
    void fileRemoved(const QString &filePath);

private slots:
    void onDirectoryChanged(const QString &path);
    void onFileModify(const QString &path);
private:
    QString m_directory;
    QFileSystemWatcher m_watcher;
    QStringList m_prevFiles;
    QMap<QString, QDateTime> m_fName_MTime;
    QSet<QString> m_modifiedFiles; // 存储被修改的文件
    QMap<QString, QTimer*> m_timers; // 存储每个文件的定时器

    void handleFileModification(const QString &fileName);
    void deleteTimer(const QString &fileName);

    //void emitModifiedSignal();
    void updatePrevFiles();
};

#endif // DIRECTORYWATCHER_H
